// 1. 创建一个需要执行的函数。
// function doSomething(callback) {
//   console.log("doSomething");
//   callback();
// }

// // 2. 创建一个回调函数。
// function callback() {
//   console.log("callback");
// }

// // 3. 调用需要执行的函数，并将回调函数作为参数传递进去。
// doSomething(callback);

// 模拟回调地狱
function step1(callback) {
  setTimeout(function () {
    console.log("Step 1 done");
    callback();
  }, 1000);
}

function step2(callback) {
  setTimeout(function () {
    console.log("Step 2 done");
    callback();
  }, 1000);
}

function step3(callback) {
  setTimeout(function () {
    console.log("Step 3 done");
    callback();
  }, 1000);
}

step1(function () {
  step2(function () {
    step3(function () {
      console.log("All steps done");
    });
  });
});
